package com.zmn.plat.services.interfaces.product;

import com.zmn.plat.model.entity.product.ServTariffProductRelation;
import com.zmn.plat.model.entity.product.ServTariffProductRelationQuery;
import com.zmn.plat.model.vo.product.relation.ServTariffProductRelationVO;

import java.util.List;

/**
 * @author tanbiao
 * @description
 * @modifier
 * @since 2019/9/20 11:20
 **/
public interface ServTariffProductRelationService {

    /**
     * 根据后台产品id查询
     *
     * @param productId
     * @return
     */
    ServTariffProductRelation findByProductId(Integer productId);

    /**
     * 分页查询
     *
     * @param query
     * @return
     */
    List<ServTariffProductRelation> listPageByQuery(ServTariffProductRelationQuery query);

    /**
     * 查询列表
     *
     * @param query
     * @return
     */
    List<ServTariffProductRelationVO> listByQueryForTariff(ServTariffProductRelationQuery query);

    /**
     * 根据后台产品查询关联关系
     *
     * @param productIds
     * @return
     */
    List<ServTariffProductRelationVO> listByProductIds(List<Integer> productIds);

    /**
     * 查询列表
     *
     * @param query
     * @return
     */
    List<ServTariffProductRelation> listByQuery(ServTariffProductRelationQuery query);

    /**
     * 根据后台产品id查询对应的计价器产品（后台产品必须为启用状态）
     *
     * @param
     * @return
     */
    List<ServTariffProductRelationVO> listTariffProductByProductIds(List<Integer> productIds);

    /**
     * 根据业务类型查询对应的计价器产品（后台产品必须为启用状态）
     *
     * @param bizType
     * @return
     */
    List<Integer> listTarifProductIdsByBizType(Integer bizType);

    /**
     * 统计数量
     *
     * @param query
     * @return
     */
    Integer countByQuery(ServTariffProductRelationQuery query);

    /**
     * 通过主键更新
     *
     * @param company
     * @return
     */
    Integer updateByKey(ServTariffProductRelation company);

    /**
     * 修改状态
     *
     * @param arrayIds
     * @param status
     * @param mcStaffName
     * @return 是否成功1/0
     */
    Integer updateStatusBatch(List<Integer> arrayIds, int status, String mcStaffName);

    /**
     * 修改关联关系
     *
     * @param relation
     * @param exitsProductIds
     * @return 是否成功1/0
     */
    Integer updateBatch(ServTariffProductRelation relation, List<Integer> exitsProductIds);

    /**
     * 添加关系
     *
     * @param relation
     * @return
     */
    Integer insert(ServTariffProductRelation relation);

    /**
     * 批量新增关系
     *
     * @param insertRelations
     * @return
     */
    Integer insertBatch(List<ServTariffProductRelation> insertRelations);

    /**
     * 批量删除关系
     *
     * @param ids
     * @return
     */
    Integer deleteBatch(List<Integer> ids);

    /**
     * 根据后台产品id删除关联关系
     *
     * @param productId
     * @return
     */
    Integer deleteByProductId(Integer productId);
}
